1. Field of the Invention
The present invention generally relates to a system and method for dynamically scheduling resources using policies to self-optimize resource workloads in a data center.
2. Description of the Related Art
Current hierarchy of physical memory, cache, main memory, and persistent storage do not lend themselves well to delivering on two key goals of an exascale system. Exascale systems are typically considered to be data centers with the capability to run 1×1018 floating point operations per second (FLOPS) and beyond. Current main memory technologies do not offer the necessary capacity per watt required to support a revolutionary shift in computing technology required by exascale computing. If one considers the cache-to-main memory relationship in today's best case memory hierarchy scenario, it is only natural that this relationship will fall one step further in future system hierarchies. Cache memory simply cannot deliver capacities at scale without highly sacrificing power efficiency. Current main memory technologies cannot achieve significant super-capacity due to physical impediments in manufacturing technology.
Additionally, current memory technologies do not offer any implicit intelligence to assist in combating issues related to data locality. For example, today's cache and main memory operate in a symbiotic world of delivering data closer to the most advantageous compute device. However, in the case of the current globally shared memory models, the time to delivery of cache coherent non-uniform memory accesses can be measured in nanoseconds. These operations are often explicitly driven from within the communication library or from within the user application. Furthermore, the power required to move data from a physically distant location is currently orders of magnitude more than is theoretically feasible to support the requirement of a revolutionary computational platform, such as an exascale system.
These issues further exacerbate the lack of true system concurrency. Explicit parallelism has become the only method by which to achieve speedup at any scale. This methodology for achieving speedup does not currently hold true at scale, it will most certainly fail in the face of an increasingly complex host system. Application architects are forced to manage not only the concurrency and synchronizing of their algorithms, but also the concurrency and synchronization of all associated memory. To operate within a revolutionary computing platform, one must design concurrency and execution models that are implicitly parallel and explicitly sequential. This implies the initial design of implicitly parallel data structures, memory architectures, and execution models.
System resiliency and sustainability can be key to fully realizing a system's return on investment. Furthermore, it will be key to delivering a system of such revolutionary standards that will subsequently function during production execution. Simple application resiliency, or check-pointing, will not suffice as a basis for design. Memory hierarchies, interconnect paths, core processing, and potentially register-level resiliency must be accounted for in the initial design phases.
Thus enabling computing on the exascale requires the development of methods that increase resiliency, and manage power while increasing performance of the system.